/*
 * @Author: Yuelei 
 * @Date: 2018-03-20 09:29:48 
 * @Last Modified by: Yuelei
 * @Last Modified time: 2018-03-22 10:00:22
 */
class MUtil{
    request(param){
        // Promise调用 异步
        return new Promise((resolve,reject)=>{
            $.ajax({
                type     : param.type    ||'get',
                url      : param.url     ||'',
                dataType : param.dataType||'json',
                data     : param.data    ||null,
                success  : res=>{
                    // ajax数据请求成功
                    if(0===res.status){
                        typeof resolve ==='function' && resolve(res.data,res.msg);
                    }
                    // 没有登录状态 强制登录
                    else if(10===res.status){
                       this.doLogin();

                    }
                    else{
                        typeof reject ==='function' && reject(res.msg||res.data);
                    }
                },
                error     : err=>{
                      // ajax数据请求失败
                      typeof reject ==='function' && reject(err.statusText);
                }
            });

        })
       
    }
    // 跳转登录
    doLogin(){
        window.location.href='/login?redirect='+encodeURIComponent(window.location.pathname); 

    }
    // 获取url参数
    getUrlParam(name){
        // xxx.com?param=123&param1=456
        //?param=123&param1=456(取？后的第一个)
        //param=123&param1=456(取？后的第一个)
        // 多个用let定义 
        let queryString = window.location.search.split('?')[1]||'',
            reg         = new RegExp("(^|&)"+name+"=([^&]*)(&|$)"),
            result      = queryString.match(reg);
            // result= ['param=123','','123','&'] (第二个参数是第一个（）匹配到的，第二个参数是第一个（）匹配到的，第三个参数是第二个（）匹配到的 ，也就是我们要的）)
         return result? decodeURIComponent(result[2]):null;
        }
    // 错误提示
    errorTips(errMsg){
        alert(errMsg||'有问题啦~')

    }
    // 本地存储
    setStorage(name,data){
        //判断数据类型
        let dataType = typeof data;
        //  对象   ：传入数据若是对象则进行json格式化然后存储
        if(dataType==='object'){
            window.localStorage.setItem(name,JSON.stringify(data));
        }
         // 基础类型：传入数据若是基础类型(可以在下面数组里面找到)
        else if(['number','string','boolean'].indexOf(dataType)>=0){
            window.localStorage.setItem(name,data);
        }
        else {
            alert('该类型不能用于本地存储')
        }
    }
    // 读取存储
    getStorage(name){
        let data = window.localStorage.getItem(name);
        if (data){
            return JSON.parse(data);
        }
        else{
            return ''
        }
     }
    //删除存储
    removeStorage(name){
        window.localStorage.removeItem(name)
        
    }
}

export default MUtil;